package main

import "fmt"

func main() {

	fmt.Println("hellow" + "zkx")
	// fmt.Printf("wyf")
	var stockcode = 123
	var enddate = "2020-12-31"
	url := "Code=%d-----endDate=%s"
	fmt.Println(url)
	//这里是把url的值给target_url，逗号后为占位符赋值
	var target_url = fmt.Sprintf(url, stockcode, enddate)
	fmt.Println(target_url)
	const text1 = "buluoxu"
	fmt.Println(text1)
	//常量可以用len(), cap(), unsafe.Sizeof()函数计算表达式的值。常量表达式中，函数必须是内置函数，否则编译不过
	const (
		a = "qwe"
		b = len(a)
	)
	fmt.Println(b, "----------------常量可以用len(), cap(), unsafe.Sizeof()函数计算表达式的值。常量表达式中，函数必须是内置函数，否则编译不过")
	c := 10
	if c >= 10 {
		fmt.Print("if后面判断条件不需要加括号")
		//b = b - 10
		//b为const类，不可以做数值改变
	} else {
		fmt.Print("注意else的写法")
	}
	//switch特殊用法：
	switch {
	case false:
		fmt.Println("1、case 条件语句为 false")
		fallthrough
	case true:
		fmt.Println("2、case 条件语句为 true")
		fmt.Println("不运行1语句是因为switch没有判断条件自动设为true")
		fallthrough
	case false:
		fmt.Println("3、case 条件语句为 false")
		fmt.Println("运行3语句是因为switch有fallthrough,如果 case 带有 fallthrough,程序不会去判断下一个 case 的表达式是否为 true继续执行下一条 case")
		fallthrough
	case true:
		fmt.Println("4、case 条件语句为 true")
		fmt.Println("不运行5语句是因为4语句中没带有 fallthrough")
	case false:
		fmt.Println("5、case 条件语句为 false")
		fallthrough
	default:
		fmt.Println("6、默认 case")
	}
	//select 语句
	//暂时不知道select怎么用
	//select 是 Go 中的一个控制结构，类似于用于通信的 switch 语句。每个 case 必须是一个通信操作，要么是发送要么是接收。
	//1.什么是控制结构
	//2.什么是通信操作
	//select 随机执行一个可运行的 case。如果没有 case 可运行，它将阻塞，直到有 case 可运行。一个默认的子句应该总是可运行的。

	//for语句
	sum := 0
	for i := 0; i <= 10; i++ {
		sum = sum + i
	}
	fmt.Println(sum)
	fmt.Println("------------")
	sum = 0
	//这样写更像 While 语句形式
	for sum <= 10 {
		sum++
	}
	fmt.Println(sum)
	fmt.Println("------------")
	/*无限循环下去
	for {
		sum++
	}*/
	//迭代输出元素
	strings := []string{"wyf", "zkx"}
	for i, s := range strings {
		fmt.Println(i, s)
	}

	numbers := [6]int{1, 2, 3, 5}
	for i, x := range numbers {
		fmt.Printf("第 %d 位 x 的值 = %d\n", i, x)
	}
}
